Opinion

TSQLUnit – testing logic in database? Should logic be there?

November 1, 2010 Opinion, SQL 6 comments

Today I’ve been on technical meeting where TSQLUnit was discussed as approach of testing database.

From what I understood it looks like this is very powerful and great tool for testing stored procedures and other execution code inside of SQL Server. It allows easily create setup for each test with minimal database schema, needed exactly for some particular stored procedure. After test got executed it rolls back to state before running test. Cool!

From my point of view this is really good thing to test stored procedures in isolated environment, as any good UT does with testing code. There is also question about integration of those tests with changes in real database and one great mind have produced using schemabindings in SQL Server.

It should be also possible to integrate TSQLUnit with CI by using NAnt.

Why?

There is only one thing I kept in my mind and did not talk about it during meeting. It is question: why do we still write lot of stored procedures? Yea, I understand that sometimes they are really needed and that there are some reporting projects that might require fetching lot of data at once. But during the meeting it looked like guys are going to use it for many other projects. Hm… From my point of view, this kind of tests should be written in regular programming language, executing some code and fetching needed data as it will be used further, after roll-backing inserted data – therefore we have integration tests. All them should run separately. And as per me this should be fine unless you have logic in database – I agree, that in this case we have to come to some database testing tools. Why should we have logic it in database unless there are some special requirements?

I still feel a bit frustrated, because for me it is quite hard to answer for the question of having logic in code or having some heavy portion of it in database. I vote for first variant, but maybe I do not have enough experience to understand why it is great to have logic in database. Who knows?

What do you think?


6 comments


Lviv .NET UG, 7-th meeting took place

November 1, 2010 DDD, Opinion, PublicTalks, Success No comments

 

I had chance to speak at yet another Lviv .NET UG meeting. This time I spoke about Domain-Driven Design. It looks like people got interested in this topic.

You can read my feedback post about this event at Lviv .NET UG site by the link “Зустріч #7. Враження, враження, враження…” (it is in Ukrainian).

I will write almost the same here and add some own opinions, so it would be interested not only for those who doesn’t know Ukrainian, but for those who would like to hear my personal opinions.

How it was

It was really great that we’ve got more than 80 people registered for this event. And if company where we hosted this event would provide us with bigger meeting room, we would probably have over 50 near 60 people attending. So as you understand because there was lack of physical room some people just turned around and went home. Crap! I would love to have them all listening to me.

Getting Scrum

Event has two speakers, me and Igor Racyborynsky. Ihor talked about “Getting Scrum”. We all played scrum and formed following product backlog:

PA295635[1] 

It was really interesting, at least not as usual presentation. But he has not covered all about the scrum and at least key concepts. Although it went extremely good.

Domain-Driven Design

I talked about Domain-Driven Design for the 5th time. Yeah! I even don’t need any time to get prepared.

PA295689[1] 

It was late in the evening, so many people got tired, especially me talking over 1 hour bombarding with new and new terms and mentioning lot of information about known concepts and patterns.

This time I’ve got many different cool presents:

  1. Yet another VS2010 bag (exactly as one I already have)
  2. IE9 T-Shirt
  3. Pen and notebook

Do you know what I like about delivering presentation to huge audience? – I always get couple of people that are excited about my speech and interested in my. They then come and talk with me as I’m an expert. I feet bit scary and nervous to show that I’m not that cool :)

Beer

As usual we have small beer party in the end. This time it probably wasn’t that small. You decide:

PA295665[1]

Speaking at JUG about DDD

Today I was invited to Java User Group meeting to talk about DDD again. Thank you guys.


No comments


Interview. Job of dream. Cheese, money and happiness?

October 17, 2010 Career, Opinion, Success No comments

July 25, I wrote blog post called “Interview” and I mentioned that maybe in year term will post yet another blog post with the same title. Now I’m writing post with almost same title. Is this due to the fact that I had interview again? –Yes and no. Actually I had two interviews since that time and did not post about them, and I will have two more interviews next week.
Real reason for this post is to extend the “Remember that you are also interviewing” section. I want to hear what you guys think about what we should ask on Interview to ensure that we get job of our dreams.

Job and happiness

I’ve been trying to find out for my-self what is the job of happiness. What does bring satisfaction from what we do.
I did not read huge range of articles and other resources on this theme, only couple of them. But besides of them I have my own opinion on this topic and will try to express it.
For example, this article states that connection between good job and happiness is overrated (?). As I understand from that article more evident role in job satisfaction is your own optimistic mood, which can be developed not only at your work but at home with you family. I agree with this, I now see that when I have better relations with my girlfriend I do have better desire to work. Also I disagree with this, because I think that everyday activities play very evident role in my satisfaction of my job. Currently everything is more or less good, but I do not get enough “I love this” work.

Cheese

But on other hand are you sure that your cheese is not getting old? And are you afraid to move to other position with new cheese? You have to read “Who moved my cheese?” This book brings into light some very important aspects of human fear to change things around even if their cheese is getting old or even if someone has moved it away. And I understand why those people are afraid. Guys like, Bodo Schaefer recommend to have something (ok, MONEY!) to ensure that you are safe. So unless you bought car or house in credit you are safe and can easily move to another piece of cheese. You know, I agree with them. I cannot buy house here in Lviv for money that I have, maybe some small car, but money that I have with bank interest and including my outgo is enough to live maybe 1-2 years without working at all. That is why I’m not afraid at all. And I would recommend you the same if you are still young – do not buy anything that is expensive and there should be NOWAY for credits!

Money table

Use following money table to find out if you have enough to feel free moving for better cheese; I have it automatically calculated in Excel spreadsheet:
You can put as Deposit MDeposit (e.g. 10000) -be honest
You need per day PerDay (e.g. 100) PerMonth=PerDay*30 -calculated
Per day to be happy PerDayHappy (e.g. 500) PayMonthHappy=PerDayHappy*30 -up to you
Ave. bank interest InterestRate (e.g. 0.12) MInterest=YouHave*InterestRate/12 -depends on banks
You are safe: YouAreSafe=PerMonth*6 YouHave > YouAreSafe ? (“you are more or less in good situation”) : (“Hey man, do you think about the future?”) -if you do not have enough to live half a year, something is definitely bad with your budget
You can live without need to work YouHaveEnough=PerMonth*12/InterestRate YouHave > YouHaveEnough ? (“you can stop working without impact on your life”) : (“it is too hard to reach this since needs often increase ”) months you have to wait to reach this goal:(YouHaveEnough-YouHave)/(MDeposit+MInterest)
You are free, or even rich YouHappy=PerMonthHappy*12/InterestRate YouHave > YouHappy ? (“hey! you are rich”):(“almost none reach this, since they start spending too much when they have enough”) months you have to wait to reach this goal:
(YouHappy-YouHave)/(MDeposit+MInterest)

What do I recommend to help you find out if some job is for you?

Create description of your dream’s job in couple of sentences. Then try to build questions that will help you correlate their offers to your dream.

Job of my dream

I work with newest technologies, designing and constructing architecture/technical approaches with professional team. In my team I have world level professional(s) from whom I can learn something new and really valuable, at the same time I see them and/or other team members to learn from me. All team members are open-minded passionate developers/QA/SM/PO. I’m more or less independent in my work organizing; customer trusts me, so I can do the best for them without their direct interventions. PO, representing customer, really knows requirements and goals of project and doesn’t push team to figure requirements for them. My employer is not afraid to invest money into refactoring/research and into team needs. They express respect to their employees and listen to them. They keep an eye on the project’s future and employees satisfaction, they do the best to keep employees motivated. Employees at the same time are really dedicated to help their customer/employer reach company’s goals.

Questions:

  1. What do you like about working for the X company? Why should I like it as well?
  2. What is the overall goal of the project I will be working on?
  3. Is project new? What are terms and team size?
  4. What are my duties for this project? In percents?
  5. What are the most challenging aspects of this position?
  6. What technologies will be used?
  7. Do you use recent approaches in software development?
  8. How to you measure code quality? Unit Testing? Code Coverage? BDD?
  9. Would it be possible to see piece of already written code?
  10. What methodologies are used for this project?
  11. With whom will I be working most closely? What is their professional level?
  12. Who is my supervisor? To whom would I report?
  13. Will I supervise someone?
  14. Are you interested in my professional development and how will this appear?
  15. Do you invest in refactoring/research?
  16. Do you accept initiative from your employees?
  17. Will I have many meetings per day?
  18. Is there anything else that prevents you from hiring me?

Also I was looking for some other good lists of questions. One is more general and other is awesome list of questions from stackoverflow.

Awesome questions list from stackoverflow

Here below in dark-blue is complete list of questions composed by Rob Wells on stackoverflow. This is copy-paste (!). All rights are reserved for stackoverflow and I do not pretend to be author of any part of it. Please follow this link to see original question.

Questions for development:

  1. What software development methodology do you use, e.g. Waterfall, Agile, Scrum, XP?
  2. Is training provided for the methodology being used?
  3. What parts of the software development life cycle do developers do?
  4. What is the breakdown of a developer’s day, e.g. how much time for support or troubleshooting, how much time for coding, analysing requirements, etc.?
  5. How long does your design, code and test cycle last? Less than thirty seconds, less than five minutes, less than ten minutes, etc.
  6. Do you encourage refactoring if sufficient unit tests exist?
  7. What test bench do you use?
  8. Do you have coding standards?
  9. Are the standards revisited or are they just left, as written, i.e. “carved in stone”, in 2001?
  10. Do you allow time for peer reviews of code?
  11. Can you give me an example of a code review that is done here. Are there different levels of a review, e.g. new system is handled in a day long explanation compared to a quick bug fix that is needed ASAP.
  12. Does the project use continuous integration?
  13. (If they use continuous integration) does your software build and test cleanly right now? What’s the current successful build rate?
  14. Does the project have regular regression testing?
  15. Are metrics kept for the code base? SLOC? Numbers of unit tests? Numbers of regression tests?
  16. How are conflicts resolved between testers and developers? I ask this because there have been times in the past where I see finger pointing of “Well, I interpreted it this way and he interpreted that,” enough to make me ask how is this handled.
  17. How are requests for large changes to be done quickly handled? For example, someone requests a web application that would normally take 2 weeks be done in 2 days for a prospective client that could be a big account.
  18. Do you use a software repository? (If the answer is no, walk out).
  19. What is the budget for tools?
  20. Do you offer your developers any sort of allowance to order technical books?

Questions about estimating:

  1. Do you have a standard template for estimating development effort for new work to make sure nothing is overlooked?
  2. A process for obtaining such an estimate?
  3. What percentage of contingency do you build in to your estimates?
  4. Do you allow time to revisit

Questions regarding the team:

  1. What has the team achieved so far?
  2. What has the team learnt?
  3. What aspects of the team would you like to change to improve the team?
  4. What’s the team spirit like?
  5. Where do team members generally have lunch?
  6. Does the team go out together every now and then?
  7. Do you encourage team members to give presentations to improve their abilities?
  8. Do you do the same with writing?
  9. Can I please speak informally to some of the people in the team I’ll be joining? (Useful to get beyond the management BS and get a feel for the real deal.)

Questions regarding personnel type policies:

  1. Does the company have a training policy?
  2. What were the latest courses that the company sent people on?
  3. Does the company have a mentoring policy?
  4. What kind of feedback mechanism is there for determining employee performance, e.g. how often is my work evaluated and suggestions given on where to improve?
  5. Is there a dress code? Do employees work a fixed set of hours?
  6. Is there any on-call time as part of the job?
  7. Do you encourage employees to set goals and provide incentives to meet those goals?
  8. Is self-improvement a value common to this organization?
  9. What’s your company’s Internet policy?
  10. What sites do you block? (I’ve worked at places where you can’t access various good technical sites.)
  11. Can I work irregular hours if I need to? For examle, at night, all the week’s hours in 2 days?
  12. Can I work from home?
  13. Do you have any policies against employees listening music while they work?
  14. How much work do you expect developers do outside of the normal business day?

Questions about management:
For the manager:

  1. What is your style of managing?
  2. How s/he motivates people
  3. How problems are handled (I leave that open-ended to see what sort of problem they assume–relating to those under them or those over them or issues unrelated to people at all, and then ask about whichever they didn’t cover).
  4. What the company does to help develop their managment skills
  5. What motivates them
  6. How much they work (typical hours/schedule)
  7. What accomplishment they are most proud of (I don’t specify work-related, and if they mention something besides that I ask about work as well)
  8. How they develop team cohesiveness and what they’ve been able to accomplish in that area
  9. What they see as the next big step for the team, for the company, and in dealing with projects or whatever the main mission of the group is

Then I ask them to answer the same kinds of questions for the company as a whole, explaining that I consider there’s such a thing as a company “personality” that usually emanates from the top. I ask how that has changed over the years (if they’ve been there very long).
Further questions on management:

  1. What’s your staff turnover rate?
  2. What’s the worst project you’ve ever been on here?
  3. How long does the typical hiree at my level stay with the company?
  4. How are projects categorized, e.g. changes compared to a small project compared to a big project?
  5. What kind of management is there within the company, e.g. is the development manager also the project manager or are these separate people usually?

Questions on the work environment:

  1. Can I please see my workplace?
  2. And, more specifically, can I see the desk where I will be working please?
  3. What’s the company’s policy to downloading software? (I’ve worked at places where you can download zip so it takes a week to get the help team to download the hex editor you needed yesterday.)
  4. How locked down are the PC’s? (I’ve worked at companies where the PC’s are so locked down it’s almost impossible to do any work e.g. no access to command prompt.)
  5. Do developers have admin rights on their PC’s? (Rule of thumb – The more locked down the PC, the worse the company. The real development sites I’ve worked at give all developers admin rights. They trust and empower them with corresponding rises in productivity.)
  6. What software is loaded by default on a standard developer PC? For example, can I use Eclipse or am I condemned to Notepad hell).
  7. Can I choose my own development tools?
  8. What sort of equipment do you provide to your developers? For example, are all developers given a laptop to work with, do they have access to two monitors, are they allowed to order other equipment (e.g. ergonomic keyboard)?

Miscellaneous questions:

  1. Why did the guy I’m replacing leave?
  2. How can I help you?
  3. What are your biggest needs right now?
  4. What kind of things would you want someone in this position to do?
  5. If you choose me, are there things I could read about your problem domain that would help me be effective on day one?
  6. Why the interviewer(s) work(s) there (or likes working there, or continutes to work there, etc). Their responses usually give me a good feel for the company.

Hope you liked this blog post. Looking forward to hear from you guys!


No comments


I gave up with Design Patterns in Java – I start my book

September 26, 2010 C#, Design Patterns, Java, Opinion, Personal, Success 12 comments

Yeah, title sounds not logically, but you will understand in a few why it is still relevant to this blog post.

It was and it is a good idea to…

In one of my blog posts I’ve decided to have all of the GoF Design Patterns written with Java. And idea itself is very good. Having all of the design patterns written by your own with you own examples gives you understanding of the DP that you cannot gain anywhere else plus to that if you have industrial experience of using all of them you can start think that you are guru of DP.

Process of writing my post on one of the Design Patterns looks like this: I read chapter of the GoF book on the particular DP, then I think up my own example if I do not have it already in my mind and after I’m done with some preliminary ideas I search over the internet for interesting articles on it and probably rethink some of the aspects of my example. After all of that I proceed to writing blog post and source code with Java.

Conclusion: Awesome and probably one of the best ways of learning DP is to have your own example of using it and industrial experience.

Design Patterns articles

One of the intents of having DP written in Java was to familiarize with that language. But it turns out that I did not learn much from Java (except of few things). Also few months ago I started keeping up Tuesday’s Design Pattern on the Lviv .NET User Group Page. Since it is .NET specific UG, I used to do following: 1) translate and 2) translate. In first place it is translation from English to Ukrainian and in second from Java to C#. When with item number one I have to apply some logic and rephrasing I cannot say the same about second item. I just copy code-paste code into Visual Studio and change few keywords. So what do I learn regarding of Java in this case?

I will continue learning Java, but I have to consider better way of doing it. I will also continue writing about Design Patterns, but with examples in C#.

Conclusion: Learning another programming language (Java) is really great idea, but be sure that you choose right approach of doing this.

First free e-book

On the road to Lviv I got perfect idea to start my first book. Of course this cannot be comprehensive stunning author’s book, but I have to start with something. In other words some probing book and this could be this “try it” case. I’m almost sure that there are no books about GoF Design Patterns in Ukrainian. (I suppose that there are in Russian, which can be easily understandable for most Ukrainians…)

How this book will be different?

  • It will be in Ukrainian.
  • It will NOT be a translation of GoF book in any way.
  • It will have my own unique examples.
  • It will be short and easy to understand.
  • It will be really cool kick-off book on DP for starting Developers.
  • It will be free to download.

Why do I need it?

I understand that this book might not be popular at all. But I have to start with something and plus to this it will help me familiarize with the whole process and build my confidence for future.

Also if you have some doubts about my idea I have a question for you: “Have you ever dreamt about your own book? If yes, do you have at least small book written?”

Conclusion: Never be skeptic about starting your first book. It might be a huge step to your success as anything else you are hesitating about but still dreaming about it!


12 comments


Book Review: “Motivate Me Right”

September 18, 2010 Book Reviews, Opinion 2 comments

So, this weekend I’ve read another book on management. This time it is
about motivation, and I do really feel that topic of the book is very
and very valid. This post isn’t like standard book review, but more
about my opinion and couple of thoughts on motivation.
So, the book is called “Motivate Me Right” (it is in Russian) and author is running site http://motivateme.ru/ go and check it out (of course if you understand Russian).
You can download it for free using this link. I would recommend to read it. (Will not take longer then 3-4 hours.)

Question of Motivation

What can do a person without motivation and interest in work? He or she can definitely do something, but what can be achieved by highly motivated person? I’m sure that you know an answer and it significantly differs from what we’ve got in first place. Absolutely same person with high motivation can achieve same results 5-10 times quicker and quality could be much higher at the same time.

Motivation constantly decreases with time

If this is so much important why then no one works on motivating people? When employer is looking for new hire they are interested to get self-motivated person. Yeah, of course they want us do the work for them. And in most cases they get motivated person at the beginning, because each new employee is open for new opportunities. What is happening after? People get disappointed, they start disliking their work because of different aspects. People are simply tedious by the same issues every day. Who works on maintaining motivation among people? – No one!

New employees are motivated

Latest months my company hired lot of new staff. When I come into room where most of them are located I feel that I’m on another planet. They all have eyes with fire inside! Their hearts desire to do something that will rock! They are open for learning new technologies.

Money

Book states that money isn’t biggest motivation factor. In most cases money motivate for not long period of time and then person whats more. Of course if worker doesn’t get money in amount that is enough+ for him you definitely have demotivated person! Managers, pay us as much as we expect and not less! As per book, each employee can expect high bonuses for their hard work. When you give money emphasize on this, show that you appreciate hard work of your employee.

Few other thoughts, but I did not say this (-:

  • Fire spoiled people or do something with them or either they will spoil others!
  • Maintain motivation in new hires!
  • Create poll. Ask people about what is important for them and what is not satisfied.
  • Care about employees. Do some changes, they will appreciate this.
  • Care about the working environment.

Why do I recommend this book?

I’m often asking co-workers about what motivates them and trying to figure out this for myself. Now I will be recommending them this book, because it is quick and very fun to read essay to understand motivation. I would also give this book to my managers, since I’m sure working on motivation in bounds of huge enterprise many-years project is important.


2 comments


My first experience using Kindle3

September 17, 2010 Opinion 5 comments

First of all, getting goods from Amazon to Ukraine isn’t impossible

I decided to try to buy something directly from Amazon (without resending to postal), because had a great desire to own Kindle and besides it costs much less if I would buy some other e-reader here in Ukraine. Reader with same capabilities/quality in Ukraine but from other vendors costs about 300$. At the same time Kindle3 costs 139$. Of course delivering to Ukraine has its price – 20.98$.
I booked it on August 23 and have it in my hands on September 15 delivered by postal service USP. And btw time it get to deliver to Ukraine after it was shipped from America took few days!


Impression

Guys, this toy is awesome! You may know that I got sick in recent days so I lied in a bed and put few books on my Kindle. Reading is just pressure. But you will need a lot of light. Under daylight it is perfect, but when you use another light, you might need few sources working together, also it depends on the book you read, because if it is something you can increase font size you might be fine with low light.

I also tried Wi-Fi and first thing I used to see was my blog. To be honest browsing internet on Kindle is painful and also you will have to do zooming often.

 Picture above was added after this post has been posted.

File Formats

Since this is my first e-reader I will not be able to accurately compare it with others, but I’ve seen a lot of other and do not see if they could be better. The most used argument about using other readers was ability to read other formats like *.pdf and etc. So I thought it will be able to recognize only this types of formats:
Kindle (.azw), text (.txt), Mobi (.mobi, .prc).

BUT it turns out that nothing prevents you from reading PDF. But I’m not sure about other formats.

I used Caribre converter to have my books in .mobi format. So if you convert .chm file or some other well structured file you get good file in output. If you convert .pdf file what you will get depends on your pdf file. In other words tables, graphics can be shifted/moved/disaper. If your pdf is set of pictures it is useless to convert it.

Only benefit from converting I see is possibility to use different features like changing font sizes.

I used to read pdf file by changing text direction to horizontal and it works well for me. Book looks exactly as it should look. Also if you pdf file is set of pictures it will take very long (10-15 sec) to change the page on kindle.

I hope that very soon I’ll read dozen of books and will spread all the wisdom I got thanks to Kindle :)


5 comments


KE – Day Forth – Continues Integration

August 12, 2010 Career, CI, Opinion No comments

For today it was planned to learn SQL and Continues Integration. In this blog post I’m going to express few thoughts on Continuous Integration. Only thoughts, because you can read comprehensive articles on it over the internet, like this one written by Martin Fowler.

My definition of CI:

Continues Integration is the way to keep an eye on the system your are building collaboratively with other guys, when everyone injects their work frequently.

I took picture somewhere from web, since I like how it illustrates CI

Few main suggestions on introducing CI:

  • Make sure that all sources needed for build are withing one Repository accessed by developers
  • Any developer should be able check-out sources on virgin machine and be ready to go
  • Everyone does commits regularly (once a day as a must), if someone complains about this you should mentor and convince him
  • Build is automatically started on commit event
  • Build should be as fast as it can
  • If build couldn’t be fast you should consider sub-project builds and primary-secondary builds
  • Developer is responsible for his commit so he should verify feedback from build system to see if build was ok and if tests passed
  • Create continuous deployment process to the environments close to production, say once a day
  • Execute automated tests on deployed system
  • Consider using some CI engine, like Hudson

And some thoughts about blind architectors

When, I came to the project and I faced lot of difficulties that project had, like having sources under different repositories, having not automated procedure of builds, also when someone failed build, everyone knew about that next day and all QA work was stopped; lot of complains about merging sources; dry applying sources to diff versions procedures. None knew what is going with project till next day! I was junior at that moment I did not know about CI, but, hey where our architects have been? Thanks to efforts of new fresh architects we’ve got CI and it applies to our project very smoothly. What is left is to convince devs do committs more often and cover everything with Unit Tests. (But that has also something to do with our project specifics.)

Why didn’t they consider introducing CI earlier? This is mysterious question, I do not understand. There should be definitely something significant (like CI) that we can improve!


No comments


English classes in outsourcing company

August 7, 2010 English, Opinion, Success 1 comment

Since each software company wants to develop into huge one and be evident player in the IT industry, managers work on improving skills of the personal. For not English speaking country, as Ukraine, it is quite critical for the employees to know English well. That is why many companies are investing money on creating English courses.

Half of the English courses, I’m attending are left and I would like to provide some feedback that can be useful for my teacher, for people who are attending courses, and for anyone else who is working in outsourcing software company in non-English speaking country.

I’ve been attending regular Upper-Intermediate course for about 4 months and I see many advantages of it, but classes do not bring as much value for my work, as I’m expecting to get.

Difficulties

Why don’t classes bring enough value for my everyday work?

First and the major reason is that subject of our studies is completely unrelated to matters we are encountering during daily work. For example one of the latest chapters of our student’s book was “Literature”. For me it was the worst chapter in that book. I’m not keen on literature, so maybe that is the reason why I was so much bored with that chapter. Maybe, but if we take a look at this from other side asking ourselves question “Which value does chapter about literature can bring to software guys?” my statement about that being worst chapter doesn’t look ridiculous. Except of some out of the common situations, like dinner with client or library software solution, literature topics bring small value. I do not say that it is bad to have such topics; I say that to some extent it is waste of time which could be consumed by learning other more interesting stuff.

Gap between engineers and English teachers

More over I think that I understand why this gap exists – because people who created study books are from another life area than software guys are. They are academic guys, they write articles and some fiction stories. On another hand we have software engineers who develop programs and discuss them, who look bit prosy for others, but we know what we know.

For example, I often watch different programming video. Guru speak about new frameworks coming soon, about mature approaches to building software, they show best practices and design patterns. Surprisingly I understand absolutely everything from their speech (maybe 1-2 words per minute missed). Why? Because they operate with words and terms I’m using in everyday work and because I’m interested to hear things they say. On one of the lessons we had listening practice, where guy talked about the train in Asia, and how some lady brought insects on plate for eating and about wooden sticks and bla-bla… Question is: why on earth I need this?

Advantages, Improvements, Thoughts…

Is everything so much bad?

No, of course, no! Main point of my previous paragraph is that classes are not 100% concentrated on needs of software engineers.

These classes bring lot for my general understanding of English Language. I now feel more confident in using perfect tenses and different grammar. Classes are great revision of the grammar, that you learnt at some time and then have forgotten.

On my previous Performance Appraisal I got remark from client, that my English has improved. I should thank my company for giving me opportunity to learn English.

Improvements to regular courses that I see are:

Have brief review of the upcoming topics and find out if people are interested in them. If not maybe it worth to provide one-two lessons that do not belong to regular course, like one lesson of “listening & speaking” one lesson for grammar one for video, after that proceed with further chapters. Get feedback from people. Btw: I really appreciate, that my teacher asked for feedback. You rock! I know that feedback is the most reinforcing way of improvements.

Course I’m attending is comprehensive (learnt this word at classes :)) set of activities, but I would really like to see more speaking. Make people speak more, and provide feedback on that only after person finished. I would like to see it more regulated. Make everyone speak.

Make some friendly-competitive environment. I’m kind of person who would like to win some rewards, like “Best presentations deliverer”. For now I would win only “Most Thursday lessons missed” – 9AM is too early for owl.

Have some home activities that differs from usual, like ask for watching some film and provide review for the students. Or simply let people introduce and explain their duties in company. That should be interesting.

Additional learning is needed

As per me it is required to work on English by your own and simultaneously attend classes. How does it work?
English teachers are the best in their understanding of grammar. Particularly my teacher can explain tenses just terrifically. Your everyday work doesn’t require complex grammar to be used, but nothing restricts you from doing that. Simply start listening to your clients more attentively and catch the smallest matters they say. Write more clean and sophisticated letters. Now you have theoretical knowledge, go and use.

My list of activities I do for learning English:

  • Attending English classes and catching grammar at daily work
  • Using theoretical knowledge in your daily work. Why not write two-three words to build more complex and correct sentences that can emphasize your e-mail.
  • Reading huge dozen of articles. I read technical only, and tech books in original.
  • Watching tech video. I just love watching it.
  • Watch with beer and friend movies you have already seen translated.
  • Watch without beer movies for the first time. Even if you understand little; low of average works – the more films you watch the more words you intuitively understand.
  • Find someone who will likely be talking with you in English during the day. I’m happy that I have colleague, who talks to me in English. We have fun. 
  • Write something. I write blog posts, that is also asset to my learning.

Conclusion

English classes are definitely needed for the software company. And I really enjoy attending them, but hate that they suck time that I need for my sleep and dislike that they are not software-related, but I try to understand this. I see some improvements, biggest part of them are applicable to our courses, but not necessary near to wishes of other students. As always everything depends on your desire to work, so I have my own list of activities I do for learning English.

Please let me know your thoughts about said above.


1 comment


Why do I use twitter

August 1, 2010 Opinion, Personal No comments

Follow me on Twitter!

I saw guys, who bought T-shirts with inscription like “Follow me on twitter @andriybuday”. These weekend I’ve been on Rock Fest in Slavske and I did something more original. Take a look:

Not so long ago I created my twitter account. Indeed it brings me some value and I get fun with it. But many people get interested how that rubbish could bring any value for me or either someone else. Couple of my friends are really concerned about it and even laugh.

Which kind of value does it bring?

I decide whom to follow, this way I consequently decide which kind of information I will get. So if I’m following some programming guys, I obviously get bombarded with information on programming. The more information I get – the more information I process – the more value it brings. The only one important restriction is that information have to be useful.

So whom do I follow?

I follow lot of MVPs on .NET(C#) and other geeks, this way I get information about new technologies and opinion on them provided directly from best professionals around the world.

Also I follow twitter accounts of different interesting sites/organizations on programming. This way I instantly get information when new podcast is ready and I can immediately start downloading it for my listening. Also I’m informed if some new versions of some products are available. For example I get information that NHibernate 3.0 Preview is available. Please notice that since I’m following those, whom I chose, I do not get information about new version of Photoshop or something like that.

I follow friends and local programmers. Actually most of my friends are developers, but anyway following them keeps me informed about their interests and allows me know what do they do.

Also I follow just few News accounts to be informed about events from real non-virtual world.

Whom do I not follow?

Different bullshit first of all, then accounts that post advertisements, those who posts on not interested for me themes. I do not follow or start unfollowing accounts, from which I get twits too often or who mix good stuff and advertisements.

How do I decide whom to follow?

Decision if I should follow someone I make taking into consideration his/her/its top 10-20 posts, if there is no more than 50-60% information on tech or something I’m interested to get from that account I do not follow that account.

What do I tweet?

Of course information that is similar to information that I would like to hear from others. It is different links on programming, my opinions on some technologies or my thoughts on stuff I use right in the moment of tweeting. I also share my personal success notes like passing some MS exam or like fixing ugly bug related to some technology.

Reasons why I do use twitter

  1. I get valuable information from known professional around the world
  2. I get technology news and instantly can respond to them
  3. I share my opinions, thoughts and could get response
  4. I get introduced to famous developers
  5. I make my blog known using twitter
  6. My tweets are across other social networking (like LinkedIn), so people who do not have twitter also know what do I do
  7. Simply getting more closer to my goal of being known community developer

Concern about the time it takes

Yes, indeed twitter takes some time on responses and tweeting and it could even take away your concentration on work. So where from do I take this time? I would say: I do not IM others uselessly and I do not spent my time on youtube or other entertainments during the work, so I think that having few tweets per day is ok, taking into account the value it brings to me.

You decide your own if twitter is something for you or not.


No comments


Moving C# code to Java

May 9, 2010 C#, Java, MasterDiploma, Opinion 4 comments

Is CLR worse than JVM or it is just because my code is bad?

Today I had conversation with one man, who is great defender and evangelist of Java related technologies.

We talked about some algorithm implemented by me with C#. That is implementation of SOM algorithm and Concurrency stuff for it. My concurrency implementation doesn’t show time improvements unless grid size is big. He was able to achive better result with small grid sizes.

There could mean two reasons:

  • CLR concurrency model gives up in front of JVM concurrency
  • My implementation has gaps… which is more likely :)

Taking into consideration that I’m getting better results when grid is of bigger sizes I could suppose that in my algorithm there is code which takes constant (or near that) time and is not paralleled.

When I look at picture of Task Manager when my programm is executing I see that second processor has  gaps when it does nothing:

This could mean only one: I need to take better look what else is executed in one thread in my application and could be paralleled.

Converting C# code to Java

But back to that man and Java. I said to myself that it is possible to move my code to Java if something.

C# to Java Converter

Download C# to Java Converter demo version from here. Since it is demo you could not convert more than 1000 lines of your code. Order costs 119$.
Because of that I was forced to remove all not necessary code. I removed all concrete classes that I’m not using and GUI, but that did not help. I did not know how much should I delete more.

Number of lines in my project/solution

I googled for line numbers in C# and found this nice tool:

Now I know that my program has about 4000 lines of code. I left about 980 lines of code in two projects that I needed and was porting them to Java separately.

Converter GUI

And converted them to Java:

Is conversion an easy task?

Conversion could be painful if you have a lot of code that interacts with system, like threads, reading and writing to files, reading configuration file, etc.

Also it was not able to recognize ‘var’ keyword. It shows me this:

//C#
TO JAVA CONVERTER TODO TASK: There is no equivalent to implicit typing
in Java:

var neuronsCount =
getNetwork().getNeurons().size();

I moved back to my C# code and changed all var to the explicit types. And regenerated Java code.

There were some troubles when I’m delivering from List<T> and doing some stuff around that.
This code:

                int a =
this[next];
                this[next] = this[i];
                this[i] = a;

I rewrote manually to:

                int a =
super.get(next);
                super.set(next, super.get(i));
                super.set(i, a);

Also Converter was not able to convert this:

Console.ReadKey();

The biggest challenge is ThreadPool and synchronizing threads tech-nicks. This requires lot of google search that shows me that instead of ManualResetEvent I could use CyclicBarrier and how to utilize thread queuing in Java.

P/S I need to find gaps in my code to show that at least CLR and myself are not so much bad things in this world :)


4 comments